#include <header.h>
#include <zemaphore.h>
/**
 * 2. 主线程执行事件A
 * A:
 * printf("Before A!\n");
 * sleep(3)
 * printf("After A\n");
 * 子线程执行事件B，
 * B:
 * printf("Before B!\n");
 * sleep(3)
 * printf("After B\n");
 * 在AB事件之外不使用sleep，使用条件变量，确保B一定在A完成之后运行。
*/

zem_t zem_1;
void *run(void *arg){
	// P(zem_1)
	zem_wait(&zem_1);
	printf("Before B!\n");
	sleep(3);
	printf("After B\n");

	return NULL;
}
int main(int argc, char* argv[]){
	// 初始化信号量，设置值为0
	zem_init(&zem_1, 0);

	// 启动线程
	pthread_t thread;
	pthread_create(&thread, NULL, run, NULL);
 	
	// 主线程执行
	printf("Before A!\n");
 	sleep(3);
 	printf("After A\n");

	// V(zem_1)
	zem_post(&zem_1);


	pthread_join(thread, NULL);
	return 0;
}